package com.chushouya.product.service.admin;

import com.general.framework.core.schema.PageResult;
import com.chushouya.product.dto.admin.evaluateitem.EvaluateItemDetailDTO;
import com.chushouya.product.dto.admin.evaluateitem.EvaluateItemListDTO;
import com.chushouya.product.dto.admin.evaluateitem.EvaluateItemQuery;
import com.chushouya.product.dto.admin.evaluateitem.EvaluateItemSaveDTO;
import com.chushouya.product.dto.admin.evaluateitem.EvaluateItemUpdateDTO;

import java.util.List;

/**
 * 估价项目业务
 */
public interface EvaluateItemService {

    /**
     * 分页查询估价项目
     * @param query 参数
     * @return 分页对象
     */
    PageResult<EvaluateItemListDTO> selectEvaluateItemPageResult(EvaluateItemQuery query);

    /**
     * 查询估价项目列表
     * @param query 参数
     * @return 列表
     */
    List<EvaluateItemListDTO> selectEvaluateItemList(EvaluateItemQuery query);

    /**
     * 根据ID查询估价项目
     * @param evaluateItemId 估价项目ID
     * @return 估价项目详情
     */
    EvaluateItemDetailDTO getEvaluateItemDetail(Long evaluateItemId);

    /**
     * 新增估价项目
     * @param evaluateItem 估价项目
     * @return ID
     */
    Long addEvaluateItem(EvaluateItemSaveDTO evaluateItem);

    /**
     * 修改估价项目
     * @param evaluateItem 估价项目
     * @return ID
     */
    Long editEvaluateItem(EvaluateItemUpdateDTO evaluateItem);

    /**
     * 删除估价项目
     * @param evaluateItemId 估价项目ID
     */
    void removeEvaluateItem(Long evaluateItemId);

    /**
     * 修改估价项目状态
     * @param evaluateItemId 估价项目ID
     * @param status 状态
     * @return ID
     */
    Long editEvaluateItemStatus(Long evaluateItemId, Integer status);

    /**
     * 根据分类ID查询估价项目列表
     * @param categoryId 分类ID
     * @return 列表
     */
    List<EvaluateItemListDTO> selectEvaluateItemListByCategoryId(Long categoryId);
}
